package com.md24housecall.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;

import com.md24housecall.fragment.MainFragment;
import com.md24housecall.fragment.NavigationDrawerFragment;
import com.md24housecall.util.GlobalConstant;
import com.md24housecall.util.MyLog;
import com.md24housecall.util.Utils;

public class HomeActivity extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks{

	/**
     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
     */
    private NavigationDrawerFragment mNavigationDrawerFragment;

    /**
     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
     */
//    private CharSequence mTitle;
    private Fragment[] fragments ={new MainFragment()};
    private int mPrevPosition=0;
    private DrawerLayout mDrawerLayout;
    private Utils util = Utils.getInstance();
    private Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
//        mToolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
        setSupportActionBar(mToolbar);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);
        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);        
//        mTitle = getTitle();
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        if(util.getCode(this).equals(""))
        	mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        mDrawerLayout.closeDrawer(Gravity.START);//close navigation when starting
    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
    	MyLog.d(GlobalConstant.TAG, "onNavigationDrawerItemSelected: "+position);
    	if (fragments[position] != null ) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            if(fragments[mPrevPosition]==null)
                fragmentManager.beginTransaction().replace(R.id.container, fragments[position]).attach(fragments[position]).commit();
            else
                fragmentManager.beginTransaction().detach(fragments[mPrevPosition]).replace(R.id.container, fragments[position]).attach(fragments[position]).commit();
            mPrevPosition=position;
            if(position==0)
            	fragments[position]=null;
        }else{
        	switch (position) {
			case 0:
				logout();
				break;
			}
        }
    }

    public void onSectionAttached(int number) {
//        switch (number) {
//            case 1:
//                mTitle = getString(R.string.title_section1);
//                break;
//            case 2:
//                mTitle = getString(R.string.title_section2);
//                break;
//            case 3:
//                mTitle = getString(R.string.title_section3);
//                break;
//        }
    }

    public void restoreActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        MyLog.d(GlobalConstant.TAG, "util.getCode(this): "+util.getCode(this));
        if(!util.getCode(this).equals("")){
        	actionBar.setDisplayShowTitleEnabled(true);
        	actionBar.setDisplayShowHomeEnabled(true);
    	}else{
	        actionBar.setHomeButtonEnabled(false); // disable the button
	        actionBar.setDisplayHomeAsUpEnabled(false); // remove the left caret
	        actionBar.setDisplayShowHomeEnabled(false); 
    	}
        actionBar.setIcon(android.R.color.transparent);
        actionBar.setTitle("");
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
            // Only show items in the action bar relevant to this screen
            // if the drawer is not showing. Otherwise, let the drawer
            // decide what to show in the action bar.
//        	if(!util.getCode(this).equals("")){
//        		getMenuInflater().inflate(R.menu.main, menu);
//        	}
            restoreActionBar();
            return true;
        }
        return super.onCreateOptionsMenu(menu);
    }

    private void logout(){
		util.clearAllData(this);
		finish();
		startActivity(new Intent(this,HomeActivity.class));
	}
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_logout) {
        	logout();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
